import 'dart:async';

class EventBus {


  // // 创建唯一的静态实例
  // 这确保了整个应用中只有一个 EventBus 实例
  // 无论在哪里调用 EventBus()，都会返回同一个实例
  // 通过私有构造函数防止使用 new EventBus() 创建新实例
  static final EventBus _instance = EventBus._internal();
  // // 工厂构造函数，总是返回同一个实例
  factory EventBus() => _instance;
  // 私有构造函数，防止外部直接创建实例
  EventBus._internal();

  // 创建广播流控制器
  // StreamController 是 Dart 的流控制器，用于管理数据流
  // broadcast() 表示这是一个广播流，可以有多个监听者
  // void 类型表示我们只关心事件发生，不需要传递具体数据
  final _taskStatusController = StreamController<void>.broadcast();
  // 提供访问流的getter
  Stream<void> get onTaskStatusChanged => _taskStatusController.stream;

  // 在任务详情页面发送事件
  // 通知状态改变
  void notifyTaskStatusChanged() {
    _taskStatusController.add(null);
  }

  void dispose() {
    _taskStatusController.close();
  }
}

final eventBus = EventBus();